﻿
namespace SistemaLogistica.Business.Logic
{
    using System;
    using System.Collections.Generic;
    using SistemaLogistica.Business.Entities;
    using SistemaLogistica.DataAccess;

    public class FacturaManager
    {
        private FacturaManager() { }

        private static readonly FacturaManager instancia = new FacturaManager();

        public static FacturaManager Instancia
        {
            get { return instancia; }
        }

        public List<Factura> Listar()
        {
            try
            {
                return FacturaData.Instancia.Listar();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public Factura ObtenerFactura(int idProveedor, string serie, string numero)
        {
            try
            {
                return FacturaData.Instancia.ObtenerFactura(idProveedor, serie, numero);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public Factura ObtenerPorID(int idFactura)
        {
            try
            {
                return FacturaData.Instancia.ObtenerPorID(idFactura);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public int Registrar(Factura factura)
        {
            try
            {
                return FacturaData.Instancia.Registrar(factura);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public void Modificar(Factura factura)
        {
            try
            {
                FacturaData.Instancia.Modificar(factura);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public void Eliminar(int idFactura)
        {
            try
            {
                FacturaData.Instancia.Eliminar(idFactura);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public List<Factura> BuscarPorProveedor(int idProveedor)
        {
            try
            {
                return FacturaData.Instancia.BuscarPorProveedor(idProveedor);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public List<string> ObtenerSeries(int idProveedor)
        {
            try
            {
                return FacturaData.Instancia.ObtenerSeries(idProveedor);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public List<string> ObtenerNumerosDocumentos(int idProveedor, string serie)
        {
            try
            {
                return FacturaData.Instancia.ObtenerNumerosDocumentos(idProveedor, serie);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
    }
}
